package com.atguigu.spring.beans;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

	public static void main(String[] args) {
		
//		// 创建HelloWrold 的一个对象
//		HelloWorld helloworld = new HelloWorld();
//		// 为name属性赋值
//		helloworld.setName("atguigu");
		
		
		// 1. 创建 Spring 的IOC 容器对象
		// ApplicationContext 代表 IOC 容器
		// ClassPathXmlApplicationContext: 是ApplicationContext 接口的实现类，该实现类从类路径从类路径下加载配置文件。
		@SuppressWarnings("resource")
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//		ApplicationContext ctxf = new FileSystemXmlApplicationContext("/spring-1/src/applicationContext.xml");
		
		// 2. 从IOC 容器中获取Bean 实例
		HelloWorld helloworld = (HelloWorld)ctx.getBean("helloworld");
		// 利用类型返回 IOC 容器中的Bean，但要求 IOC 容器中必须只有一个该类型的bean
//		HelloWorld helloworld = (HelloWorld)ctx.getBean(HelloWorld.class);
		
		System.out.println(helloworld);
		
		// 调用 hello 方法
		helloworld.hello();

		Car car = (Car)ctx.getBean("car");
		System.out.println(car);

		car = (Car)ctx.getBean("car2");
		System.out.println(car);

		Person person = (Person) ctx.getBean("person");
		System.err.println(person);
		
		person = (Person) ctx.getBean("person2");
		System.err.println(person);
		
	}
}
